<?php
/**
 * Hello Model for Hello World Component
 * 
 * @package    Joomla.Tutorials
 * @subpackage Components
 * @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
 * @license    GNU/GPL
 */

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.model' );

/**
 * Hello Model
 *
 * @package    Joomla.Tutorials
 * @subpackage Components
 */
class NewMediaModelMedia extends JModel
{
	var $_catids_con_secciones = array(18, 31, 34, 37, 38);
	var $_catid = null;
	var $_provinciad = null;
	var $_medid = null;
	var $_title = null;

	function setCatid($catid) {
		$this->_catid = $catid;
	}	

	function setProvinciaid($provinciaid) {
		$this->_provinciaid = $provinciaid;
	}	

	function setMedid($medid) {
		$this->_medid = $medid;
	}	

	function setTitle($title) {
		$this->_title = $title;
	}

	function _validacionBasica() {
		if ( $this->_catid == null || !is_numeric($this->_catid) ) {
			return 'Tipo de medio no valido';
		} else if ($this->_provinciaid == null || !is_numeric($this->_provinciaid)) {
			return 'Alcance no valido';
		} else if ($this->_title == null) {
			return 'Titulo no valido';
		}
		return '';
	}

	function saveProgramme() {
		global $mainframe;
		$db		=& JFactory::getDBO();

		$ret = $this->_validacionBasica();
		if (!empty($ret)) return $ret;

		if ($this->_medid == null || !is_numeric($this->_medid)) {
			return 'Medio no valido ';
		}

		$query = "select count(*) "
			." from #__programa p "
			." inner join #__medio_programa mp on mp.progid = p.id "
			." where LOWER(p.title) like LOWER('".$this->_title."') and mp.medid = $this->_medid ";
		
		$db->setQuery( $query );
		$db->query();
		$cuantos = $db->loadResult();

		if ( is_null($cuantos) || $cuantos > 0 ) {
			return 'Ya existe un programa con ese nombre en ese medio';
		}

		$query = "INSERT INTO #__programa (title) VALUES ('".$this->_title."')";
		$db->setQuery( $query );
		$res = $db->query();
		if ($res == false) {
			return 'Problemas de base de datos, contactar al administrador';
		}

		$inserted = $db->insertid();
		$query = "INSERT INTO #__medio_programa (progid, medid) VALUES (".$inserted.", ".$this->_medid.")";
		$db->setQuery( $query );
		$res = $db->query();
		if ($res == false) {
			return 'Problemas de base de datos, contactar al administrador';		
		}		
		return $ret != '' ? $ret : 'ok';
	}
	
	function saveMedia() {
		global $mainframe;
		$db		=& JFactory::getDBO();

		$ret = $this->_validacionBasica();
		if (!empty($ret)) return $ret;
		
		$query = "select count(*) "
			." from #__medio m "
			." where LOWER(m.title) like LOWER('".$this->_title."') and m.catid = ".$this->_catid ." and m.provid = ". $this->_provinciaid;
		$db->setQuery( $query );
		$db->query();
		$cuantos = $db->loadResult();
		if ( is_null($cuantos) || $cuantos > 0 ) {
			return 'Ya existe un medio con ese nombre en ese tipo de medio';
		}
		
		// inserto el medio
		$query = "INSERT INTO #__medio (title, catid, provid) VALUES ('".$this->_title."', ".$this->_catid.", ".$this->_provinciaid.")";
		$db->setQuery( $query );
		$res = $db->query();
		if ($res == false) {
			return 'Problemas de base de datos, contactar al administrador';
		}
		$inserted = $db->insertid();
		// si el medio lleva programas pre definidos:
		if (in_array($this->_catid, $this->_catids_con_secciones)) {
			$query = "insert into #__medio_programa (select ".$inserted." medid, prg.id progid from #__programa prg where prg.id <= 14)";
			$db->setQuery( $query );
			$db->query();
			if ($db->errorNum != 0) {
				return 'Problemas de base de datos, contactar al administrador';
			}
		}

		return 'ok';
	}
}
